﻿(function ($) {


    var _dealDataGridRows = function (rows) {
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            for (var c in row) {
                if (typeof (row[c]) == "boolean") {
                    if (row[c]) {
                        row[c] = "是";
                    }
                    else {
                        row[c] = "否";
                    }
                }
                
            }
        }
    };
    var _getDataGridTotalRows = function (datagrid, url, callback) 
    {
        var args = datagrid.datagrid("options").queryParams;
        $.post(url, args, function (result) {
            
                callback.call(this, result.rows);
            
        }, 'json');
    };
    var _createFormToExport = function (selector, url, args) {
        $("#datagrid-export-temp-form").remove();
        var form = $("<form />");
        form.attr("id", "datagrid-export-temp-form").attr("name", "datagrid-export-temp-form").attr("method", "post");
        selector.append(form);

        form.form('submit', {
            url: url,
            onSubmit: function (param) {
                param.data = args.data;
                param.columns = args.columns;
                param.frozencolumns = args.frozencolumns
            },
            success: function (result) {
                //销毁form
                form.remove();
            }
        });
    };
    var _exportToExcelAction = "/Export/ExportDataByDataGrid";
    var _methods = {
        ///////////////////////////////////////////////////////
        /// 导出到excel；指定的参数url是一个用于获取datagrid所有rows（不考虑分页）的方法；
        /// 指定的参数type用于区分“导出当前页”还是“导出所有页”，1表示当前页，2表示所有页，默认是当前页
        /// 当导出所有页时，url必须提供
        //////////////////////////////////////////////////////


        exportRows: function (jq, param)
        {

            if (!param)
            {
                param = { type: "1" };
            }
            if (param.type == "2" && !param.url) {
                return;
            }
            var frozencolumns = $(jq).datagrid("options").frozenColumns;
            var columns = $(jq).datagrid("options").columns;
            var args = {frozencolumns: JSON.stringify(frozencolumns), columns: JSON.stringify(columns) };
            if (param.type == "1") {
              
                var rows = $(jq).datagrid("getRows");
                _dealDataGridRows(rows);
                $.extend(args, { data: JSON.stringify(rows) });
                _createFormToExport($(jq), _exportToExcelAction, args);
            }
            
            else {
                
                var _callback = function (rows) {
                    $.extend(args, { data: JSON.stringify(rows) });
                    _createFormToExport($(jq), _exportToExcelAction, args);
                };
                _getDataGridTotalRows($(jq), param.url, _callback);
            }
            
        }
    };
    $.extend($.fn.datagrid.methods, _methods);
})(jQuery);
